package tg.game.lottery;

import tg.exception.JsonIniException;
import tg.game.IGameNotify;
import tg.game.IGameRequest;
import tg.game.IGameResponse;
import tg.game.base.BaseGameLogic;
import tg.game.define.GameType;

/**
 * 彩票游戏的逻辑基类
 * @author W530
 * 
 * 游戏设定绑定方式：
 *    1.玩法id绑定:绑定id直接就是玩法id，创建玩法时只要类型选择好，无须选择只要默认就好
 *    2.类型绑定：选择类型绑定之后，就需要选择从基础玩法类型设定里面选择相应的设定id来绑定（这个需要事先为游戏创建好基础玩法设定，创建用户时，把基础设定拷到用户设定表去）
 * 游戏设定持有方式：
 *    1.每级必须要有，新增时拷贝上级的（公司拷贝基础的）
 *    2.每级可以不用有，如果本级没有取上级的(要从基础表一个个去映射查找)
 * 
 * 规定好状态处理：
 *   未开始状态（预加载）：
 *   下注状态：
 *   封盘状态：
 *   开奖状态：
 *   结算状态：
 *   结束状态
 * 做好彩票游戏的状态切换处理：自动切换（时间轴添加任务切换） 人工切换（游戏人工动作）
 * 
 * 状态处理（总共就五个动作）：
 * 	      代理下注
 *    会员下注
 *    游戏状态切换
 *    开奖
 *    结算
 *    
 *    
 * 缓存的功能：
 *    获取下注页面信息(下注赔率的变化）
 *    获取操盘页面信息(下注额、笔数、赔率的变化）
 *    操盘:判断操盘权限
 *    下注判断:自动降倍、补货，限注,游戏限权、玩法权限、补货权限
 *    结算报表
 *    
 * 码号分类：
 *    下注码号 （[单码号，单一赔率，无须加工]）
 *    赔率码号（提供赔率的基础码号，可能下多个，寻找一个最小赔率的，或平均的，[多码号，多赔率，要计算:找出最小赔率]）
 *    中奖码号 （取赔率时，也是从中奖码号中取出来合成的，[多码号，多个赔率(中奖时参考)，直接组合]）
 *          
 *    过关码号 （取赔率时，从每关码号取赔率出来合成，[多个码号，多个赔率(每关赔率，中几关相乘，中和算1，1个不中就全不中)，直接组合]）
 *    --->以上几种是取赔率 和 中奖时的计算，是在不同的玩法各自逻辑中实现
 *    --->但是 缓存中：单码号   和  多码号  需要在缓存中实现，这样在 玩法逻辑里，可以根据多码号的赔率依自己的逻辑加工出自己真正的赔率 
 *    
 *    多码号时， 自动降赔率  要想出一种方法
 *    多码号时， 操盘 要分  【玩法】操盘、   【下注的整组码号】 操盘、【组合下注中的原始赔率码号】操盘、
 *    		【玩法】操盘 是所有码号赔率一样的情况下，整体升降赔率的操盘，是针对所有本玩法所有码号的操盘
 *          【下注的整组码号】操盘   跟【下注码号】操盘是一样的，就是对下注的下注码号（不管是单码、还是组合码号）单独的操盘升降赔率，是不影响玩法中的其他下注码号的赔率
 *          【组合下注中的原始赔率码号】操盘   是 多码号下注玩法中，针对原始码号操盘，一个原始码号降倍了，所有下本码号的组合码号都会影响
 *          【多中奖赔率】操盘，  也是用下注赔率的，只能一起降，或百分比降（百分比再转成赔率，不影响原设计）
 *          
 *        	这两种是否自动降倍？  如何自动降倍？   两种是做并行的，谁低用谁来做赔率？这些如果能做成参数就好
 *        
 *          降倍  要有两种类型： 1.倍数  2.百分比    就是步阶达到时，降的是  百分比的倍数，还是具体的 倍数  ，
 *          玩法要绑定降倍类型： 0 两种都可以 1.倍数  2.百分比  比如  特码可以绑定 两种 ,  三中二   只能绑定 百分比（两个赔率的无法具体降倍，因为两种赔率差太多）
 *          
 *          码号个数类型：
 *             单码号：原始码号和下注码号一样
 *             多码号：下注码号是原始码号的组合：三全中，过关。。。
 *          赔率类型：
 *          	单码单赔率：一个赔率，赔率就是下注赔率 
 *              多码单赔率：多个原始码，根据玩法逻辑计算得到一个下注赔率
 *          	中奖多赔率：中奖时多个赔率，要玩法逻辑知道本码中哪个赔率或没中
 *          	过关多赔率：多个原始码，把赔率串一起，每个原始码根据自己的玩法逻辑判断中奖，全部中奖才算中奖（中和为1倍）
 *          
 *    
 *    主盘码号 ：限注用主盘码号的，但是子盘的注额是叠加到主盘码号去的
 *    子盘码号 ：查下注信息都是查主盘的（除非指定查本身，所以默认去查主盘的，指定查本身的）
 *    -->取下注信息时，主盘码号要取 所有子盘加上主盘的信息和  ，取子盘时要从主盘取，     从主、子盘取信息时带参数是否取本身（这样就不用加工，用原本的方法取,不然主、子盘的方法都覆盖父类）
 *    
 *    
 * 
 *    
 *    
 * 场次的时间字段 ：
 * 		开盘时间，封盘时间，开始开奖时间，抓到奖时间，结算完成时间   
 */
public class LotteryGameLogic extends BaseGameLogic{

	@Override
	public void iniWithJson(String json) throws JsonIniException {
		// TODO Auto-generated method stub
		
	}
	@Override
	public String getGameName() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int getGameID() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public GameType getGameType() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public IGameResponse handleRequest(IGameRequest request) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void handleNotify(IGameNotify notify) {
		// TODO Auto-generated method stub
		
	}


	
}
